Chun-wei Fan [Mon, 27 Jun 2016 05:16:43 +0000 (13:16 +0800)]
GDK-Win32/4.0: Enable HiDPI support for Windows
This enables HiDPI support for GTK+ on Windows, so that the
fonts and window look better on HiDPI displays. Notes for the current
work:
-The DPI awareness enabling can be disabled if and only if an application
manifest is not embedded in the app to enable DPI awareness AND a user
compatibility setting is not set to limit DPI awareness for the app, via
the envvar GDK_WIN32_DISABLE_HIDPI. The app manifest/user setting for
DPI awareness will always win against the envvar, and so the HiDPI items
will be always setup in such scenarios, unless DPI awareness is disabled.
-Both automatic detection for the scaling factor and setting the scale
factor using the GDK_SCALE envvar are supported, where the envvar takes
precedence, which will therefore disable automatic scaling when
resolution changes.
-We now default to a per-system DPI awareness model, which means that we
do not handle WM_DPICHANGED, unless one sets the
GDK_WIN32_PER_MONITOR_HIDPI envvar, where notes for it are in the
following point.
-Automatic scaling during WM_DISPLAYCHANGE is handled (DPI setting change of
current monitor) is now supported. WM_DPICHANGED is handled as well,
except that the window positioning during the change of scaling still
needs to be refined, a change in GDK itself may be required for this.
-I am unable to test the wintab items because I don't have such devices
around.
https://bugzilla.gnome.org/show_bug.cgi?id=768081
Chun-wei Fan [Fri, 4 Nov 2016 06:16:36 +0000 (14:16 +0800)]
gdkscreen-win32.c: Remove leftovers of removal of visual APIs
There were some more items that ought to be removed. Remove them.
https://bugzilla.gnome.org/show_bug.cgi?id=773299
Balázs Meskó [Fri, 4 Nov 2016 06:18:55 +0000 (06:18 +0000)]
Update Hungarian translation
Benjamin Otte [Thu, 3 Nov 2016 23:33:13 +0000 (00:33 +0100)]
x11: Init no-multihead monitor without root window
Previous code gave warnings because the root window wasn't initialized
yet.
Benjamin Otte [Thu, 3 Nov 2016 23:17:57 +0000 (00:17 +0100)]
wayland: Remove all mentions of visuals
Benjamin Otte [Thu, 3 Nov 2016 23:15:52 +0000 (00:15 +0100)]
mir: Remove all mentions of visuals
Benjamin Otte [Thu, 3 Nov 2016 23:15:07 +0000 (00:15 +0100)]
broadway: Remove all mentions of visuals
Benjamin Otte [Thu, 3 Nov 2016 23:10:43 +0000 (00:10 +0100)]
quartz: Remove all mentions of visuals
Benjamin Otte [Thu, 3 Nov 2016 23:08:03 +0000 (00:08 +0100)]
win32: Remove all mentions of visuals
Benjamin Otte [Thu, 3 Nov 2016 23:02:37 +0000 (00:02 +0100)]
gdk: Remove visual APIs from GdkScreen
gdk_screen_list_visuals(), gdk_screen_get_system_visual() and
gdk_screen_get_rgba_visual() are gone now.
Benjamin Otte [Thu, 3 Nov 2016 22:40:54 +0000 (23:40 +0100)]
x11: Maointin window visuals without GdkVisual
That way, we don't need a GdkScreen to create a GdkWindow anymore.
Benjamin Otte [Thu, 3 Nov 2016 21:47:42 +0000 (22:47 +0100)]
x11: Remove unused hash table
We were neatly populating it, but nobody ever looked at it.
Benjamin Otte [Thu, 3 Nov 2016 21:40:36 +0000 (22:40 +0100)]
x11: Replace gdk_display_get_window_visual()
... with functions that don't use GdkVisual.
A small step towards getting rid of GdkVisual.
Benjamin Otte [Thu, 3 Nov 2016 20:29:07 +0000 (21:29 +0100)]
menubar: We don't need an input window
Input is handled by the menuitems completely.
Benjamin Otte [Thu, 3 Nov 2016 04:46:46 +0000 (05:46 +0100)]
x11: Use X11 variables instead of GDK variables
This way, we avoid GdkVisual usage.
Benjamin Otte [Thu, 3 Nov 2016 04:38:07 +0000 (05:38 +0100)]
x11: Remove unused complexity
With all Windows having the same visual, there's only ever one visual we
need to check.
Benjamin Otte [Thu, 3 Nov 2016 04:32:37 +0000 (05:32 +0100)]
docs: Remove vfunc that doesn't exist anymore
Lapo Calamandrei [Thu, 3 Nov 2016 17:52:54 +0000 (18:52 +0100)]
Adwaita: correctly style headerbars in a stack
corners are correctly rounded now. Stacked splitted headerbars are
not supported yet though.
Ernestas Kulik [Thu, 3 Nov 2016 10:58:41 +0000 (12:58 +0200)]
popover: pop down when pressing escape
Simply hiding the popover may introduce inconsistencies in application
behavior, since popping up/down is the usual use case.
https://bugzilla.gnome.org/show_bug.cgi?id=773885
Matthias Clasen [Thu, 3 Nov 2016 12:32:31 +0000 (08:32 -0400)]
Add a testcase for stacked headerbars
This currently has some theming issues.
This example is for Lapo to work those out.
Chun-wei Fan [Thu, 3 Nov 2016 10:07:43 +0000 (18:07 +0800)]
configure.ac: Remove gdk/win32/rc/gdk.rc
This needs to be removed, which was forgotten. Sorry.
Chun-wei Fan [Thu, 3 Nov 2016 10:00:03 +0000 (18:00 +0800)]
autotools: Update MSVC gir build script generation
Now that GTK+ is built as a single DLL, and the .lib that is built is
gtk-4.lib, we need to update the autotools sections in generating the
NMake Makefile snippets so that we can have the correct commands and flags
for building the .gir files, which will all now link to gtk-4-vsXX.dll (or
so).
Chun-wei Fan [Thu, 3 Nov 2016 09:46:32 +0000 (17:46 +0800)]
Visual Studio builds: Use gtk-4.lib for the .lib file
As with the autotools builds, use gtk-4 as the name of the .lib file that
is produced from the build.
Actually this is already done with GTK-3.x with the autotools builds,
but this update is not done there as gtk-3.0.lib/gdk-3.0.lib/gailutil-3.0.lib
was used for such a long time that changing it there might have caused
trouble for people there.
Chun-wei Fan [Thu, 3 Nov 2016 09:17:57 +0000 (17:17 +0800)]
Visual Studio builds: Build GTK+ as a monolithic DLL
Update the project configs to build GDK/GSK as a static lib and include
them into the GTK+ DLL as a monolithic DLL, which is in line with what is
done in the autotools builds, since the code changes needed for Windows
builds for a monolithic build are now in place.
Chun-wei Fan [Thu, 3 Nov 2016 08:03:08 +0000 (16:03 +0800)]
Windows: Update code for monolithic GTK DLL
Now that the autotools build folded the GDK/GSK bits into the main GTK+
DLL, there are some updates that need to be done for this. We need to:
-Fold the DllMain() of GDK-Win32 into the main GTK+ DllMain(), as we need
the HINSTANCE to register the window. We can't have two DllMain()'s in a
single DLL.
-Remove the GDK rc(.in) files, as that is not used anymore. Make the GTK+
.rc(.in) file load the gtk.ico GTK+ logo file instead so that we still
get the GTK+ logo for the application icon by default. Update the
autotools build files as well.
-Revert commit
b9f9980 as LRN pointed out in comment 25 in bug 773299, as
GTK+ is now a monolithic DLL, and we ought not to export this private
function.
https://bugzilla.gnome.org/show_bug.cgi?id=773299
Olivier Fourdan [Wed, 2 Nov 2016 10:51:54 +0000 (11:51 +0100)]
wayland: check valid pending cairo surface
gdk_wayland_window_attach_image() is normally called from
gdk_window_end_paint() to notify the compositor of newly staged drawing.
If any of the drawing code inadvertently dispatches the wayland event
loop (for instance with a gdk_flush() call), then it's possible that by
the time gdk_window_end_paint() is called, the staged drawing is already
destroyed.
This commit bypasses the attach_image call in scenarios where the staged
drawing is prematurely dropped.
https://bugzilla.gnome.org/show_bug.cgi?id=773274
Benjamin Otte [Thu, 3 Nov 2016 01:37:52 +0000 (02:37 +0100)]
revealer: Port to no-window widget
Benjamin Otte [Thu, 3 Nov 2016 01:29:38 +0000 (02:29 +0100)]
textview: Convert to no-window widget
Benjamin Otte [Thu, 3 Nov 2016 01:18:45 +0000 (02:18 +0100)]
iconview: Turn into no-window widget
Benjamin Otte [Wed, 2 Nov 2016 23:11:39 +0000 (00:11 +0100)]
colorplane: Port to be a no-window widget
Benjamin Otte [Wed, 2 Nov 2016 23:38:48 +0000 (00:38 +0100)]
colorswatch: Readd accidentally removed call
Benjamin Otte [Wed, 2 Nov 2016 20:56:51 +0000 (21:56 +0100)]
viewport: Turn into no-window widget
While doing so, get rid of the GdkWindow instead of keeping it.
Benjamin Otte [Wed, 2 Nov 2016 16:50:12 +0000 (17:50 +0100)]
menu: Don't set widget->window
Instead, create an input window for the menubar and omit the window for
the menu itself.
Timm Bäder [Tue, 1 Nov 2016 19:51:03 +0000 (20:51 +0100)]
widget: Remove outdated comment
gtk_widget_override_color is no more.
Timm Bäder [Tue, 1 Nov 2016 19:29:00 +0000 (20:29 +0100)]
widget: Remove unused visibility-notify-event
Timm Bäder [Tue, 1 Nov 2016 19:28:28 +0000 (20:28 +0100)]
widget: Remove state-flags leftovers
Benjamin Otte [Wed, 2 Nov 2016 14:19:49 +0000 (15:19 +0100)]
css: Fix radial-gradient() color stop computation
The copy/paste from the linear gradient code had an error.
Chun-wei Fan [Tue, 1 Nov 2016 08:42:31 +0000 (16:42 +0800)]
gdk/win32: Complete gdk_screen_is_composited() removal
Commit
d249e77 (API: screen: Remove gdk_screen_is_composited()) attempted
to update the GDK-Win32 for the removal of the API, but some parts were
missed. This updates the code so that things continue to build and run.
https://bugzilla.gnome.org/show_bug.cgi?id=773299
Chun-wei Fan [Wed, 2 Nov 2016 04:57:27 +0000 (12:57 +0800)]
gsk: Export gsk_render_node_get_bounds()
gtk/inspector/rendernodeview.c calls this private function from GSK, so we
need to ensure that this function is exported so that GTK+ can link
properly on compilers that do not support automatic exporting.
https://bugzilla.gnome.org/show_bug.cgi?id=773299
Benjamin Otte [Wed, 2 Nov 2016 06:16:08 +0000 (07:16 +0100)]
gtk: Chain up in realize()
... instead of copy/paste from gtk_widget_real_realize.
Benjamin Otte [Wed, 2 Nov 2016 05:51:59 +0000 (06:51 +0100)]
widget: Insist on widgets calling gtk_widget_set_has_window()
This way, we can grep the code for the bad widgets that set this to
TRUE and fix them.
Benjamin Otte [Wed, 2 Nov 2016 05:51:33 +0000 (06:51 +0100)]
gtk: Call gtk_widget_set_has_window() on every widget
Even if we just set it to the value it already had.
Benjamin Otte [Wed, 2 Nov 2016 05:46:02 +0000 (06:46 +0100)]
treeview: Don't use gtk_widget_get_allocaton()
Use gtk_widget_get_allocated_width()/height() instead.
Chun-wei Fan [Wed, 2 Nov 2016 04:23:41 +0000 (12:23 +0800)]
demos/application: Call the right program
We need to update the call to gtk4-application-demo, plus include the
correct icon file for this.
Matthias Clasen [Wed, 2 Nov 2016 02:06:25 +0000 (22:06 -0400)]
inspector: Cosmetic improvements to the recorder
Juan Pablo Ugarte [Tue, 1 Nov 2016 13:59:05 +0000 (10:59 -0300)]
Use GLSL version 110 for OpenGL 2 shaders.
According to docs and Intel legacy drivers,
GLSL version 130 is for GL 3.0 not GL 2.0/2.1
Validated files with reference compiler from
https://www.khronos.org/opengles/sdk/tools/Reference-Compiler/
Matthias Clasen [Fri, 28 Oct 2016 16:58:18 +0000 (12:58 -0400)]
check button: Update for new box gadget functionality
The box gadget now does the render node conversion for
all its children, so we have less work to do.
Matthias Clasen [Fri, 28 Oct 2016 16:57:39 +0000 (12:57 -0400)]
expander: Update for new box gadget functionality
The box gadget now does the render node conversion for
all its children, so we have less work to do.
Matthias Clasen [Fri, 28 Oct 2016 16:57:07 +0000 (12:57 -0400)]
box gadget: Implement get_render_node vfunc
This implements get_render_node in the obvious way.
Matthias Clasen [Fri, 28 Oct 2016 16:56:21 +0000 (12:56 -0400)]
container: Add a private api for render node propagation
Add a function that propagates a render node for a single
child. This will be used in the box gadget to handle widgets.
Matthias Clasen [Fri, 28 Oct 2016 16:55:33 +0000 (12:55 -0400)]
gadget: Add a get_render_node vfunc
This will let us do box gadgets like we do containers.
Matthias Clasen [Fri, 28 Oct 2016 00:46:08 +0000 (20:46 -0400)]
Convert GtkEntry to indirect rendering
Warning! This unveils some positioning issue with the secondary icon.
Matthias Clasen [Tue, 1 Nov 2016 18:11:25 +0000 (14:11 -0400)]
Fix the build
testgtk.c had some dead code referring to GdkColor. Drop it.
Matthias Clasen [Fri, 28 Oct 2016 21:08:25 +0000 (17:08 -0400)]
Drop GdkColor
It is deprecated and no longer used.
Matthias Clasen [Fri, 28 Oct 2016 21:04:24 +0000 (17:04 -0400)]
Stop supporting GdkColor in text buffer serialization
GdkColor is going away soon.
Matthias Clasen [Fri, 28 Oct 2016 21:03:24 +0000 (17:03 -0400)]
Drop the settings color parser
We have no color-valued settings anymore.
Matthias Clasen [Fri, 28 Oct 2016 20:58:12 +0000 (16:58 -0400)]
Use GdkRGBA for text attributes
Now that GtkTextAttributes is private, we can clean this struct
up a bit. The first step is to switch from GdkColor to GdkRGBA,
and adapt all users.
Matthias Clasen [Thu, 27 Oct 2016 17:43:15 +0000 (13:43 -0400)]
Drop GtkTextAttributes from the docs
Matthias Clasen [Thu, 27 Oct 2016 17:39:01 +0000 (13:39 -0400)]
Make GtkTextAttributes private
This is a problematic struct, and giving direct access to it
has kept us from making improvements to GtkTextView. Drop it
from the public API, together with the auxiliary APIs. If
it turns out that this functionality is needed, we should add
individual getters.
Benjamin Otte [Tue, 1 Nov 2016 17:32:50 +0000 (18:32 +0100)]
inspector: Add a button to clear all recordings
Clears the recordings list, and even better: Frees all your memory.
Benjamin Otte [Tue, 1 Nov 2016 17:31:13 +0000 (18:31 +0100)]
inspector: Collect statistics for unclassable types
I want to know how many GskRenderNodes I have!
Benjamin Otte [Tue, 1 Nov 2016 17:03:16 +0000 (18:03 +0100)]
inspector: Require toggling on/off of recording
This way, we don't eat up all your memory every time you start the
inspector.
Benjamin Otte [Tue, 1 Nov 2016 00:21:02 +0000 (01:21 +0100)]
inspector: Add list of render nodes to recorder
And make it possible to view the actually selected node in the view.
Benjamin Otte [Mon, 31 Oct 2016 15:38:19 +0000 (16:38 +0100)]
inspector: Next step in the recorder view
We now record all render operations and display them.
Warning: This is very brute force, you can't clear the recordings or
turn recording off. And this thing easily records 25MB per recorded
frame, so be careful to not run out of memory and get your browser
killed. ;)
Benjamin Otte [Sun, 30 Oct 2016 05:11:38 +0000 (06:11 +0100)]
inspector: Add more infrastructure
This one introduces the Recording object which is essentially a single
instance of something that happened.
The RenderRecording is an instance of an actual rendering operation.
Benjamin Otte [Sat, 29 Oct 2016 19:11:23 +0000 (21:11 +0200)]
inspector: Add outline for a new "recorder" tab
Sébastien Wilmet [Tue, 1 Nov 2016 14:51:21 +0000 (15:51 +0100)]
docs: fix typos in GtkMenuShell
Benjamin Otte [Tue, 1 Nov 2016 04:47:35 +0000 (05:47 +0100)]
rendernode: Remove the renderer from the rendernode
Benjamin Otte [Tue, 1 Nov 2016 04:45:01 +0000 (05:45 +0100)]
rendernode: Require passing a renderer to get_draw_context()
This is in preparation of making render nodes independent of the
renderer, so that they can be rendered multiple times with different
renderers.
Benjamin Otte [Tue, 1 Nov 2016 03:58:29 +0000 (04:58 +0100)]
gsk: Remove gsk_render_node_get_scale_factor()
Scale factors belong to the renderers, not the nodes. The nodes should
just use whatever scale factor the renderer tells them to when
rendering.
Benjamin Otte [Tue, 1 Nov 2016 03:47:52 +0000 (04:47 +0100)]
gdkgl: Change prototype of function
The function does not upload a cairo surface, it uploads pixel data.
So don't take a cairo surface as an argument, take pixel data.
Emmanuele Bassi [Tue, 1 Nov 2016 15:00:31 +0000 (15:00 +0000)]
gsk: Use the appropriate GLSL version
The GLSL versions are:
OpenGL 2.1: #version 110
OpenGL 3.0: #version 130
OpenGL 3.2: #version 150
OpenGLES 2.0: #version 100
OpenGLES 3.0: #version 300 es
So we need to check the version of the GdkGLContext if we want use the
appropriate version, especially for legacy OpenGL contexts, which can be
both 3.x and 2.x.
Marek Černocký [Tue, 1 Nov 2016 08:48:00 +0000 (09:48 +0100)]
Updated Czech translation
Benjamin Otte [Tue, 1 Nov 2016 02:57:42 +0000 (03:57 +0100)]
widget: Create render node with correct bounds
We want a render node where (0,0) is the top left of the widget.
However, we need to account for the clip origin not matching the
allocation origin.
Benjamin Otte [Mon, 31 Oct 2016 23:04:01 +0000 (00:04 +0100)]
treeview: Clip before translating
We want to clip invalidations to the bin window, not the treeview
itself.
Benjamin Otte [Mon, 31 Oct 2016 23:03:03 +0000 (00:03 +0100)]
treeview: Clip to bin window size when drawing bin window
This ensures that the drawing does not extend the actually drawn area.
It also ensures that our math is sane, because the math assumes the clip
area cannot extend the window. After all, before GTK4 it always was like
that.
Fixes a bunch of drawing bugs when the clip area does indeed extend too
far.
Benjamin Otte [Tue, 1 Nov 2016 02:42:35 +0000 (03:42 +0100)]
rendernode: Transform cairo_t to correct coordinates
We want to have the coordinate system of the created cairo surface to be
identical to the coordinate system of the node's bounds. For that, we
need to translate the cairo surface by the bounds' origin.
Benjamin Otte [Tue, 1 Nov 2016 02:40:01 +0000 (03:40 +0100)]
rendernode: Use ceilf() on the size of the cairo surface
Bounds sizes are floats, so round up to the next integer so we end up
with enough space to draw.
Timm Bäder [Fri, 28 Oct 2016 10:56:36 +0000 (12:56 +0200)]
stack: Don't underallocate child in interpolate-size case
In that case, we can't just rely on the stack allocation being big
enough. Especially, the child can actually be bigger than the current
stack allocation, so take that into account when positioning it.
Timm Bäder [Fri, 28 Oct 2016 10:51:03 +0000 (12:51 +0200)]
stack: Redraw last_visible_surface if child allocation changes
So the widget is properly aligned.
Timm Bäder [Mon, 31 Oct 2016 16:42:40 +0000 (17:42 +0100)]
builderparser: Order string comparisons after frequency
The typical UI file has a lot more <property> tags than it has
<requested> or <interface> tags, etc. so order the string comparisons
according to this expected case.
Timm Bäder [Sun, 23 Oct 2016 15:25:58 +0000 (17:25 +0200)]
builderparser: Save tag type instead of tag name
So we can save a few string comparisons
Timm Bäder [Mon, 12 Sep 2016 19:39:33 +0000 (21:39 +0200)]
builderparser: Don't needlessly copy requested object names
Timm Bäder [Mon, 12 Sep 2016 19:27:51 +0000 (21:27 +0200)]
builderparser: stack-allocate ParserData
No reason for it to be heap-allocated, it won't survive this function
call anyway.
Timm Bäder [Sat, 29 Oct 2016 20:16:39 +0000 (22:16 +0200)]
paned: Convert to indirect rendering
Timm Bäder [Sat, 29 Oct 2016 17:43:49 +0000 (19:43 +0200)]
popover: convert to indirect rendering
Timm Bäder [Sat, 29 Oct 2016 17:27:22 +0000 (19:27 +0200)]
separator: Convert to indirect rendering
Timm Bäder [Sun, 30 Oct 2016 18:29:41 +0000 (19:29 +0100)]
widget: Remove damage-event
Timm Bäder [Sun, 30 Oct 2016 18:23:36 +0000 (19:23 +0100)]
widget: remove show-help
Timm Bäder [Sun, 30 Oct 2016 16:01:19 +0000 (17:01 +0100)]
widget: Remove app-paintable
Emmanuele Bassi [Mon, 31 Oct 2016 16:30:10 +0000 (16:30 +0000)]
build: Clean the uninstalled introspection GIR files
We need to remove them from the build when cleaning them.
Additionally, this automatically adds them to the Git ignore file.
Emmanuele Bassi [Mon, 31 Oct 2016 16:28:09 +0000 (16:28 +0000)]
gsk: Use GskRenderer.create_cairo_surface()
GskRenderNode should ask the renderer for a Cairo surface when creating
a drawing context.
Emmanuele Bassi [Mon, 31 Oct 2016 16:26:50 +0000 (16:26 +0000)]
gsk: Add internal Renderer.create_cairo_surface()
We need an overridable entry point for GskRenderer to create Cairo
surfaces.
Implementations of GskRenderer can override create_cairo_surface() to
create efficient surfaces, possibly with zero copies involved, depending
on the GDK backend.
Juan Pablo Ugarte [Fri, 28 Oct 2016 20:30:46 +0000 (17:30 -0300)]
gdk/Makefile.am: fixed glsl resources extra dist files.
Use the same wildcard partern used to generate gdk.gresource.xml to include files in EXTRA_DIST var.
Timm Bäder [Sat, 29 Oct 2016 20:05:18 +0000 (22:05 +0200)]
button: show() the image in gtk_button_new_from_icon_name
Timm Bäder [Sun, 30 Oct 2016 14:36:26 +0000 (15:36 +0100)]
tests: Don't add wigets to a GtkInvisible
It's not a GtkContainer.
Timm Bäder [Sat, 29 Oct 2016 14:35:16 +0000 (16:35 +0200)]
box: Use measure() to measure child sizes
Timm Bäder [Sat, 29 Oct 2016 14:16:49 +0000 (16:16 +0200)]
box: Mark out params of _query_packing as (optional)
Timm Bäder [Sat, 29 Oct 2016 13:51:17 +0000 (15:51 +0200)]
sidebarrow: Use GtkButton:icon-name
Timm Bäder [Sat, 29 Oct 2016 13:50:53 +0000 (15:50 +0200)]
box: Remove unused private API